package com.groupseven.backend.controller;

import com.groupseven.backend.domain.ResultType;
import com.groupseven.backend.domain.TeacherAduit.TeacherAduitNow;
import com.groupseven.backend.mapper.TeacherAduitMapper;
import com.groupseven.backend.services.TeacherAduitService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Calendar;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/api/vi/teacherAduit")
public class TeacherAduitController {
    @Autowired
    public TeacherAduitService teacherAduitService;
    @Autowired
    public TeacherAduitMapper teacherAduitMapper;

    @GetMapping("/test/")
    public int getallnow(){
        int a1=teacherAduitService.getnowPatentGradeByplan("test");
        return a1;
    }

    @PostMapping("/Now/")//传StartTime,AduitYears,TeacherType,Belonging(审核计划)
    public ResultType addTeacherAduitNow(@RequestBody TeacherAduitNow teacherAduitNow){
        if(teacherAduitService.selectPersonalmsgByusername(teacherAduitNow.username)==null){
            return new ResultType(0,"未找到该用户的个人信息，请完善个人信息",200);
        }
        if(teacherAduitService.selectTeacherAduitNowByusername(teacherAduitNow.username)!=null){
            return new ResultType(0,"该用户的考核计划已存在",200);
        }
        teacherAduitNow.EmployeeNumber=teacherAduitService.selectPersonalmsgByusername(teacherAduitNow.username).EmployeeNumber;
        teacherAduitNow.RealName=teacherAduitService.selectPersonalmsgByusername(teacherAduitNow.username).Realname;

        Calendar calendar=Calendar.getInstance();
        calendar.setTime(teacherAduitNow.StartTime);
        calendar.add(Calendar.YEAR,teacherAduitNow.AduitYears);
        teacherAduitNow.EndTime=calendar.getTime();

        teacherAduitNow.PaperGrade=(0);
        teacherAduitNow.PatentGrade=(0);
        teacherAduitNow.PrizeProductGrade=(0);
        teacherAduitNow.ProgramGrade=(0);
        teacherAduitNow.TotalGrade=(0);
        teacherAduitNow.AcessGrade=(teacherAduitService.selectAcessGradeByTeacherType(teacherAduitNow.TeacherType));
        teacherAduitService.addTeacherAduitNow(teacherAduitNow);
        return new ResultType(1,"添加成功",200);
    }

    @PutMapping("/Now/")
    public ResultType updateTeacherAduitNow(@RequestBody TeacherAduitNow teacherAduitNow){
        if(teacherAduitService.selectTeacherAduitNowByusername(teacherAduitNow.username)==null){
            return new ResultType(0,"未找到该用户的考核计划",200);
        }
        else {
            Calendar calendar=Calendar.getInstance();
            calendar.setTime(teacherAduitNow.StartTime);
            calendar.add(Calendar.YEAR,teacherAduitNow.AduitYears);
            teacherAduitNow.EndTime=(calendar.getTime());
            teacherAduitNow.AcessGrade=(teacherAduitService.selectAcessGradeByTeacherType(teacherAduitNow.TeacherType));
            teacherAduitService.updateTeacherAduitNow(teacherAduitNow);
            return new ResultType(1,"修改成功",200);
        }
    }

    @DeleteMapping("/Now/{username}")
    public ResultType deleteTeacherAduitNow(@PathVariable("username") String username){
        if(teacherAduitService.selectTeacherAduitNowByusername(username)==null){
            return new ResultType(0,"未找到该用户的考核计划,删除失败",200);
        }
        else return new ResultType(1,"删除成功",200);
    }


    @GetMapping("/getall")
    public ResultType getallNowTeacherAduit(){
        if(teacherAduitService.getallTeacherAduitNow().isEmpty()){
            return new ResultType(0,"查询失败，考核表中无数据，请添加",200);
        }
        else {
//            List<User> users=teacherAduitMapper.getuserNotinTable();
//            for(User user:users){
//                TeacherAduitNow teacherAduitNow=teacherAduitService.selectTeacherAduitNowByusername("test");
////                if(teacherAduitService.selectPersonalmsgByusername(user.Username).EmployeeNumber==null){
////                     teacherAduitNow.EmployeeNumber="null";
////                }
////                else teacherAduitNow.EmployeeNumber=teacherAduitService.selectPersonalmsgByusername(user.Username).EmployeeNumber;
////                if(teacherAduitService.selectPersonalmsgByusername(user.Username).Realname==null){
////                     teacherAduitNow.RealName="null";
////                }
////                else teacherAduitNow.RealName=teacherAduitService.selectPersonalmsgByusername(user.Username).Realname;
//               //////
//                teacherAduitNow.RealName="test";
//                teacherAduitNow.EmployeeNumber="test";
//                teacherAduitNow.AduitYears=0;
//                teacherAduitNow.username=user.Username;
//                ////////
//                Calendar calendar=Calendar.getInstance();
//                calendar.setTime(teacherAduitNow.StartTime);
//                calendar.add(Calendar.YEAR,teacherAduitNow.AduitYears);
//                teacherAduitNow.EndTime=calendar.getTime();
//
//                teacherAduitNow.PaperGrade=(0);
//                teacherAduitNow.PatentGrade=(0);
//                teacherAduitNow.PrizeProductGrade=(0);
//                teacherAduitNow.ProgramGrade=(0);
//                teacherAduitNow.TotalGrade=(0);
//                teacherAduitNow.AcessGrade=(teacherAduitService.selectAcessGradeByTeacherType("科研型教师"));
//                teacherAduitService.addTeacherAduitNow(teacherAduitNow);
//            }



            List<TeacherAduitNow> teacherAduitNows=teacherAduitService.getallTeacherAduitNow();
            for(TeacherAduitNow teacherAduitNow:teacherAduitNows){
                teacherAduitNow.AcessGrade=teacherAduitService.selectAcessGradeByTeacherType(teacherAduitNow.TeacherType);
                teacherAduitNow.PaperGrade=teacherAduitService.getnowPaperGradeByplan(teacherAduitNow.username);
                teacherAduitNow.PatentGrade=teacherAduitService.getnowPatentGradeByplan(teacherAduitNow.username);
                teacherAduitNow.ProgramGrade=teacherAduitService.getnowProgramGradeByplan(teacherAduitNow.username);
                teacherAduitNow.PrizeProductGrade=teacherAduitService.getnowPrizeProductGrade(teacherAduitNow.username);
                teacherAduitNow.TotalGrade=teacherAduitNow.PaperGrade+teacherAduitNow.PatentGrade+teacherAduitNow.PrizeProductGrade+teacherAduitNow.ProgramGrade;
            }
            ResultType resultType=new ResultType(1,"查询成功",200);
            resultType.setTeacherAduitNows(teacherAduitNows);
            return resultType;
        }
    }

    @GetMapping("/{username}")
    public ResultType getNowTeacherAduitByusername(@PathVariable("username") String username){
        if(teacherAduitService.selectTeacherAduitNowByusername(username)==null){
            return new ResultType(0,"查询失败，考核表中无数据，请添加",200);
        }
        else {
            TeacherAduitNow teacherAduitNow=teacherAduitService.selectTeacherAduitNowByusername(username);
            teacherAduitNow.PaperGrade=(teacherAduitService.getnowPaperGradeByplan(username));
            teacherAduitNow.PatentGrade=(teacherAduitService.getnowPatentGradeByplan(username));
            teacherAduitNow.ProgramGrade=(teacherAduitService.getnowProgramGradeByplan(username));
            teacherAduitNow.PrizeProductGrade=(teacherAduitService.getnowPrizeProductGrade(username));
            teacherAduitNow.TotalGrade=(teacherAduitNow.PaperGrade+teacherAduitNow.PatentGrade+teacherAduitNow.PrizeProductGrade+teacherAduitNow.ProgramGrade);
            ResultType resultType=new ResultType(1,"查询成功",200);
            resultType.setTeacherAduitNow(teacherAduitNow);
            return resultType;
        }
    }


}
